//堆区分析

# include<stdio.h>
# include<malloc.h>
# include<string.h>

char* get_arr(void)
{
	char *p = (char*)malloc(100);
	if( p == NULL)
		return NULL;//如果分配失败,则返回空
	strcpy (p,"abcdef");
//	p = "abcdef";
	return p;
}

int main (void)
{
	char*q = NULL;
	
	q = get_arr();
	if(q != NULL)
	printf ("%s",q);

	free(q);/*
	这里不能使用free(p);
	因为p不是main里面的变量,而是get_arr里面的变量
	在main函数中q指向了这段动态分配的空间,所以free(q)就能够释放掉get_arr函数里面分配的空间.
	free(),释放变量所指向的空间
	*/
	q = NULL;
	return 0;

}
